perm filename CASE[X,ALS] blob sn#082467 filedate 1974-01-20 generic text, type T, neo UTF8
00010	⊂ State 0	from 2 on - ;
00020	IF VAL>0 THEN BEGIN
00030	  STATE←2; QOLD←QQ; SUMP←MAX←VAL;
00040	
00050	  END;
00060	
00070	⊂ STATE 1	from 5 on + ;
00080	IF VAL<0 THEN BEGIN
00090	  IF XXP<2 THEN BEGIN
00100	    STATE←5; SUM←SUM+SUMP-VAL;
00110	    IF MAXOLD>MAX THEN MAX←MAXOLD;
00120	    END;
00130	  END ELSE BEGIN
00140	  SUMP←SUMP+VAL;
00150	  IF SUMP>ALPHA THEN BEGIN
00160	    STATE←2; SUM←0;
00170	    ⊂ Decision;
00180	    IF (SUMREF=SUMSAV)∧(PER>PERIOD*3%4)∧(QOLD-QSAVE>PERIOD*3%4)
00190	      THEN P←1 ELSE
00200	    IF (SUMOLD<SUMSAVE)∧(PER<PERIOD*3%4) 
00210	      THEN P←0 ELSE
00220	    IF (SUMOLD>SUMSAVE)∧(PER>PERIOD*3%4)∧(SOMOLD>SUMREF%2)
00230	      THEN P←2 ELSE
00240	    IF (SUMOLD>SUMSAV)∧(PER>PERIOD*9%10)∧(SUMOLD>SUMMIN)
00250	      THEN P←3 ELSE
00260	      IF SUMOLD>SUMREF THEN P←6;	⊂ To get in step;
00270	    IF PER>PERIOD*3%4 THEN BEGIN
00280	      QRES[QX]←QSAVE; SUMRES[QX]←SUMOLD; SPAN[QX]←MAXOLD-MINOLD;
00290	      IF QX<7 THEN QX←QX+1;
00300	      P←0;
00310	      END;
00320	    IF PER>RERIOD*3%2 THEN BEGIN
00330	      K←0;
00340	      FOR I←0 STEP 1 UNTIL 7 DO
00350	        IF (SUMRES[QX]>K THEN BEGIN K←SUMRES[QX]; QX←I; END;
00360	      IF K>0 THEN BEGIN 
00370	        QSAVE←QRES[QX]; SUMSAV←SUMRES[QX]; P←7;
00380	        END;
00390	    END;
00400	  IF P>0 THEN BEGIN
00410	    ⊂ Record mark;
00420	    PEEK;
00430	    QREF←QSAVE; QSAVE←QOLD;
00440	    SUMREF←SUMSAV; SUMSAV←SUMOLD;SUMOLD←0;
00450	    WHILE (BUFT[PITX-1] LSH -15)≥(QREF-PERIOD%3) DO PITX←PITX-1;
00460	    BUFT[PITX]←(QREF LSH 15)+(SUMREF LAND '77770)+(P LAND '7);
00470	    PITX←PITX+1;
00480	    IF STATE≠6 THEN PERIOD←(2*PERIOD+PER)%3;
00485	    IF PERIOD <PERMIN THEN PERIOD←PERMIN;
00487	    IF PERIOD>PERMAX THEN PERIOD←PERMAX;
00490	    FOR I←0 STEP 1 UNTIL 4 DO SUMRES[I]←SPAN[I]←0;
00500	    QX←0;
00510	    END;
00520	  END;
00530	
00540	⊂ STATE 2	from 0 on +	from 1 on alpha with decision;
00550	IF VAL<0 THEN  STATE←0 ELSE BEGIN
00560	  SUMP←SUMP+VAL; IF VAL>MAX THEN MAX←VAL;
00570	  IF VAL<MARGIN THEN QOLD←QQ-1 ELSE
00580	  IF SUMP>DELTA THEN BEGIN
00590	    XXM←0;
00600	    STATE←3; QSAVE←QOLD; SUMSAV←SUMOLD; PER←QSAVE-QREF;
00610	    END;
00620	
00630	  END;
00640	
00650	⊂ STATE 3	from 4 on +	from 2 on delta;
00660	IF VAL<0 THEN BEGIN
00670	  XXM←XXM+1;
00680	  STATE←4; SUMM←MIN←VAL;
00690	  END ELSE BEGIN
00700	  SUMP←SUMP+VAL; IF VAL>MAX THEN MAX←VAL;
00710	  END;
00720	
00730	⊂ STATE 4	from 3 on - ;
00740	IF VAL>0 THEN BEGIN
00750	  IF XXM<2 THEN BEGIN
00760	    STATE←3; SUMP←SUMP+VAL-SUMM;
00770	    END;
00780	  END ELSE BEGIN
00790	  SUMM←SUMM+VAL; IF VAL<MIN THEN MIN←VAL;
00800	  IF SUMM<DELTN THEN BEGIN
00810	    STATE←5; SUM←SUMP-SUMM; SUMP←SUMM←0;
00820	    END;
00830	  END;
00840	
00850	⊂ STATE 5	from 2 on -	 from 4 on DELTN;
00860	IF VAL>0 THEN BEGIN
00870	  STATE←1;
00880	  ⊂ Prepare for decision;
00890	  MAXOLD←MAX; MINOLD←MIN; SUMOLD←SUM;
00900	  SUMP←MAX←VAL; QOLD←QQ;
00910	  END ELSE BEGIN
00920	  SUM←SUM-VAL; IF VAL<MIN THEN MIN←VAL;
00930	  END;
00940	END;
00950	
00960	IF (QQ-QREF>PERIOD*2)∧(SUM<DELTA) THEN BEGIN
00970	  QREF←QREF+PERIOD; SUMREF←SUMMIN;
00980	  BUFT[PITX]←8QREF LSH 15);
00990	  PITX←PITX+1;
01000	  END;
01010	
01020	QQ←QQ+1;
     

00010	
00020	PROCEDURE PEEK;
00030	BEGIN
00040	
00050	OUTSTR("PITX="%CVS(PITX)&"  QSAVE="&CVS(QSAVE)&"  P="&CVS(P)&
00060	  " "&CVS(SUMREF)&" "&CVS(SUMSAV)&" "&CVS(SUMOLD)&
00065	  " "&"PERIOD="&CVS(PERIOD)&" "&CVS(PER)&CRLF);
00080	END;
00090	
00100	PROCEDURE SPOR;
00110	BEGIN
00120	OUTSTR(CVS(STATE)&" ");
00130	END;